package pe.com.pgn.consolidadorventas.servidorcentral.dao.impl;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.orm.hibernate3.HibernateTemplate;

import pe.com.pgn.consolidadorventas.servidorcentral.dao.ArchivoDao;
import pe.com.pgn.consolidadorventas.servidorcentral.dbo.Archivo;
import pe.com.pgn.consolidadorventas.servidorcentral.util.Constantes;
import pe.com.pgn.consolidadorventas.servidorcentral.util.FechasUtil;

public class ArchivoDaoImpl implements ArchivoDao {

	static Logger logger = Logger.getLogger(ArchivoDaoImpl.class);
	
	HibernateTemplate plantilla;
	 
    public ArchivoDaoImpl(){}

	public Archivo consultarCargaDelDia(int idEstacion, Date dia,int tipoArchivo) {
    	String diaCarga = FechasUtil.formatearDateToString(dia);
    	Archivo a = consultarCargaDelDia(idEstacion, diaCarga, tipoArchivo);
    	return a;
	}

	@SuppressWarnings("unchecked")
	public Archivo consultarCargaDelDia(int idEstacion, String dia,int tipoArchivo) {
		
		String hqlQuery = "from Archivo a where a.idEstacion = "+idEstacion+
				  " and a.fechaRegistro = '"+dia+"'"+
				  " and a.tipoArchivo = "+tipoArchivo;
		
		List<Archivo> lista = (List<Archivo>)plantilla.find(hqlQuery);
		Archivo a = null;
		if(lista!=null && lista.size()>0){
		a = lista.get(0);
		}
		return a;
	}

	public List<Archivo> consultarCargaIntervaloDias(int idEstacion,
			Date diaInicio, Date diaFin, int tipoArchivo) {
		String inicio = FechasUtil.formatearDateToString(diaInicio);
		String fin = FechasUtil.formatearDateToString(diaFin);
		List<Archivo> lista = consultarCargaIntervaloDias(idEstacion,inicio,fin,tipoArchivo);
		return lista;
	}

	@SuppressWarnings("unchecked")
	public List<Archivo> consultarCargaIntervaloDias(int idEstacion,
			String diaInicio, String diaFin, int tipoArchivo) {
		String hqlQuery = "from Archivo a where a.idEstacion = "+idEstacion+
		  " and a.fecha>= to_date('"+diaInicio+"','"+Constantes.FORMATO_FECHA+"')"+
		  " and a.fecha<(to_date('"+diaFin+"','"+Constantes.FORMATO_FECHA+"')+1)"+
		  " and a.tipoArchivo = "+tipoArchivo+" order by a.fecha desc";
		List<Archivo> lista = (List<Archivo>)plantilla.find(hqlQuery);
		return lista;
	}

	public HibernateTemplate getPlantilla() {
		return plantilla;
	}

	public void setPlantilla(HibernateTemplate plantilla) {
		this.plantilla = plantilla;
	}

}
